#include "wall.h"

// 初始化墙壁，默认贴合终端边缘，也可自定义内缩等
void initWall(Wall *wall, int height, int width) {
    wall->top = 0;          // 上墙壁紧贴终端顶部
    wall->bottom = height;  // 下墙壁紧贴终端底部
    wall->left = 0;         // 左墙壁紧贴终端左侧
    wall->right = width;    // 右墙壁紧贴终端右侧

    drawWall(wall); // 初始化时直接绘制墙壁
}

// 检测蛇头与墙壁的碰撞情况
bool checkWallCollision(Wall *wall, Snake *snakeHead) {
    return (snakeHead->y == wall->top)    || 
           (snakeHead->y == wall->bottom) || 
           (snakeHead->x == wall->left)   || 
           (snakeHead->x == wall->right);
}

// 在终端上绘制墙壁，用字符模拟
void drawWall(Wall *wall) {
    // 绘制上下墙壁（横向线条）
    for (int x = wall->left; x < wall->right; x++) {
        mvaddch(wall->top, x, '-');    // 上墙壁线条
        mvaddch(wall->bottom, x, '-'); // 下墙壁线条
    }
    // 绘制左右墙壁（纵向线条）
    for (int y = wall->top; y <= wall->bottom; y++) {
        mvaddch(y, wall->left, '|');   // 左墙壁线条
        mvaddch(y, wall->right, '|');  // 右墙壁线条
    }
    refresh(); // 刷新屏幕，让绘制的墙壁显示出来
}